////////////////////////////////////////////////////////////////////////////////
// Copyright 2006 CORE Solutions Limited
// All rights reserved.
// PROPRIETARY AND CONFIDENTIAL INFORMATION.
// Use is subject to license terms.
//
// FUNCTION ID      :   ERROR_MSG_LABEL
// AUTHOR           :   Victor Zheng 
// DATE CREATE      :   2006/01/12
// DESCRIPTION      :   a FORM file for the function, ERROR_MSG_LABEL
//                  :   
//                  :   
//                  :   
//
// MODIFICATION HISTORY:
// DATE         AUTHOR          VERSION NO.         COMMENT
// -----------  --------------  ------------------  -------------------
// 2006/01/12   Victor Zheng    1.0                 source is generated.
//
//
//
////////////////////////////////////////////////////////////////////////////////

package com.erp.app.admin.errorMsg.web;

import java.util.Hashtable;
import java.util.ArrayList;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;

import com.erp.framework.controller.form.SimplePageEditStyleForm;
import com.erp.framework.util.logger.Logger;
import com.erp.framework.util.CommonUtil;

import com.erp.app.common.ProjectConstants;
import com.erp.app.common.select.beans.SelectDelegate;

import com.erp.app.setup.codeSetup.web.CodeDtlRow;
/**
* <p>A <strong>PageEditForm</strong> is a JavaBean which provides property
* getter and setter methods for all of the bean properties, and implements
* <code>Serializable</code>, as required by the JavaBean specification
* The main purpose for this bean is to get the user search criteria input
* and to get the user input from the web browsers.
* from the web browsers.
* As the name implies, it will only handle one-page-edit documents.
*
* @author          Victor Zheng 
* @version 1.0     2006/01/12
* @since           FrameWork 1.0
*
*/
public class ErrorMsgLabelForm extends SimplePageEditStyleForm {

	//Attributes (DB Table Name: T_ERROR_MSG_LABEL)
	private String[] companyCode;                    //DB Column Name: COMPANY_CODE
	private String[] groupId;                        //DB Column Name: GROUP_ID
	private String[] menuId;                         //DB Column Name: MENU_ID
	private String[] objectId;                       //DB Column Name: OBJECT_ID
	private String[] langCode;                       //DB Column Name: LANG_CODE
	private String[] objectName;                     //DB Column Name: OBJECT_NAME
	private String[] objectType;                     //DB Column Name: OBJECT_TYPE
	private String[] objectWebLabel;                 //DB Column Name: OBJECT_WEB_LABEL
	private String[] createUser;                     //DB Column Name: CREATE_USER
	private String[] createDate;                     //DB Column Name: CREATE_DATE
	private String[] updateUser;                     //DB Column Name: UPDATE_USER
	private String[] updateDate;                     //DB Column Name: UPDATE_DATE

	//Searching Criteria Attributes (DB Table Name: T_ERROR_MSG_LABEL)
	private String srchCompanyCode;                  //DB Column Name: COMPANY_CODE
	private String srchStatus;                       //DB Column Name: STATUS
	private String srchGroupIdFr;                    //DB Column Name: GROUP_ID
	private String srchGroupIdTo;                    //DB Column Name: GROUP_ID
	private String srchMenuIdFr;                     //DB Column Name: MENU_ID
	private String srchMenuIdTo;                     //DB Column Name: MENU_ID
	private String srchObjectIdFr;                   //DB Column Name: OBJECT_ID
	private String srchObjectIdTo;                   //DB Column Name: OBJECT_ID
	private String srchLangCodeFr;                   //DB Column Name: LANG_CODE
	private String srchLangCodeTo;                   //DB Column Name: LANG_CODE
	private String srchObjectNameFr;                 //DB Column Name: OBJECT_NAME
	private String srchObjectNameTo;                 //DB Column Name: OBJECT_NAME
	private String srchObjectTypeFr;                 //DB Column Name: OBJECT_TYPE
	private String srchObjectTypeTo;                 //DB Column Name: OBJECT_TYPE
	private String srchObjectWebLabelFr;             //DB Column Name: OBJECT_WEB_LABEL
	private String srchObjectWebLabelTo;             //DB Column Name: OBJECT_WEB_LABEL

	/**
	* Converts to a string representing the data in this object.
	* A new <code>String</code> object is allocated and initialized to 
	* contain the character sequence currently represented by this 
	* object. This <code>String</code> is then returned. Subsequent 
	* changes to this object do not affect the contents of the 
	* <code>String</code>. 
	*
	* @return     a string representation of the object.
	* @see        java.lang.Object#toString()
	* @author     Victor Zheng 
	* @since      FrameWork 1.0
	*/
	public String toString() {
		String pkStr = "PK: {srchGroupIdFr = " + this.srchGroupIdFr
			+ "\n, srchGroupIdTo = " + this.srchGroupIdTo
			+ "\n, srchMenuIdFr = " + this.srchMenuIdFr
			+ "\n, srchMenuIdTo = " + this.srchMenuIdTo
			+ "\n, srchObjectIdFr = " + this.srchObjectIdFr
			+ "\n, srchObjectIdTo = " + this.srchObjectIdTo
			+ "\n, srchLangCodeFr = " + this.srchLangCodeFr
			+ "\n, srchLangCodeTo = " + this.srchLangCodeTo + "}\n";

		String colStr = "COL: {srchObjectNameFr = " + this.srchObjectNameFr
			+ "\n, srchObjectNameTo = " + this.srchObjectNameTo + "}\n";

		String mandatoryStr = "{srchCompanyCode = " + this.srchCompanyCode
			+ "\n, srchStatus = " + this.srchStatus
			+ "}\n";

		return "toString() is:\n" + mandatoryStr + pkStr + colStr;
	}

	
	/**
	* Validate the properties that have been set for this non-HTTP request,
	* and return an <code>ActionErrors</code> object that encapsulates any
	* validation errors that have been found.  If no errors are found, return
	* <code>null</code> or an <code>ActionErrors</code> object with no
	* recorded error messages.
	* <p>
	* The default implementation attempts to forward to the HTTP version of
	* this method.
	*
	* @param      the action errors array
	* @author     Victor Zheng 
	* @since      FrameWork 1.0
	*/
	public void validateSearch(ActionErrors errors) {

		/*
		ArrayList rows = getMultiRows(0);

		for (int i = 0; rows != null && i < rows.size(); i++) {
			ErrorMsgLabelRow row = (ErrorMsgLabelRow) rows.get(i);

			if (CommonUtil.isEmpty(row.getShipDate())) {
				ActionErrorUtil.addErrorForGeneralFieldBlank(errors, "Ship Date");
			} else {
				if (!CommonUtil.isValidDate(row.getShipDate())) {
					ActionErrorUtil.addErrorForInvalidDate(errors, "Ship Date");
				}
			}
		}
		*/
	}

	/**
	* Validate the properties that have been set for this non-HTTP request,
	* and return an <code>ActionErrors</code> object that encapsulates any
	* validation errors that have been found.  If no errors are found, return
	* <code>null</code> or an <code>ActionErrors</code> object with no
	* recorded error messages.
	* <p>
	* The default implementation attempts to forward to the HTTP version of
	* this method.
	*
	* @param      mapping      the action mapping
	* @param      formIn       the action form
	* @param      request      the http request
	* @param      response     the http response
	* @param      errors       the action errors array
	* @author     Victor Zheng 
	* @since      FrameWork 1.0
	*/
	public void moreValidateSearch(ActionMapping mapping, ActionForm formIn,
		HttpServletRequest request, HttpServletResponse response, ActionErrors errors) {


		try {

		} catch (Exception e) {
			Logger.logExceptions(this, e);
		}
	}

	/**
	* Reset all bean properties to their default state.  This method
	* is called inside the reset() method.
	*
	* @param      mapping The mapping used to select this instance
	* @param      request The servlet request we are processing
	* @author     Victor Zheng 
	* @since      FrameWork 1.0
	*/
	public void otherReset(ActionMapping mapping, HttpServletRequest request) {

		setRowMode(null);
		setIdx(null);
		//companyCode = null;
		//srchCompanyCode = null;
	}

	////////////////////////////////////////////////////////////////////////////////
	//Generated Accessors (get/set methods) for Table (ErrorMsgLabel)
	////////////////////////////////////////////////////////////////////////////////

	public String[] getCompanyCode() {
		return this.companyCode;
	}

	public String[] getGroupId() {
		return this.groupId;
	}

	public String[] getMenuId() {
		return this.menuId;
	}

	public String[] getObjectId() {
		return this.objectId;
	}

	public String[] getLangCode() {
		return this.langCode;
	}

	public String[] getObjectName() {
		return this.objectName;
	}

	public String[] getObjectType() {
		return this.objectType;
	}

	public String[] getObjectWebLabel() {
		return this.objectWebLabel;
	}

	public String[] getCreateUser() {
		return this.createUser;
	}

	public String[] getCreateDate() {
		return this.createDate;
	}

	public String[] getUpdateUser() {
		return this.updateUser;
	}

	public String[] getUpdateDate() {
		return this.updateDate;
	}

	public void setCompanyCode(String[] companyCode) {
		this.companyCode = companyCode;
	}

	public void setGroupId(String[] groupId) {
		this.groupId = groupId;
	}

	public void setMenuId(String[] menuId) {
		this.menuId = menuId;
	}

	public void setObjectId(String[] objectId) {
		this.objectId = objectId;
	}

	public void setLangCode(String[] langCode) {
		this.langCode = langCode;
	}

	public void setObjectName(String[] objectName) {
		this.objectName = objectName;
	}

	public void setObjectType(String[] objectType) {
		this.objectType = objectType;
	}

	public void setObjectWebLabel(String[] objectWebLabel) {
		this.objectWebLabel = objectWebLabel;
	}

	public void setCreateUser(String[] createUser) {
		this.createUser = createUser;
	}

	public void setCreateDate(String[] createDate) {
		this.createDate = createDate;
	}

	public void setUpdateUser(String[] updateUser) {
		this.updateUser = updateUser;
	}

	public void setUpdateDate(String[] updateDate) {
		this.updateDate = updateDate;
	}

	////////////////////////////////////////////////////////////////////////////////
	//Generated Accessors (get/set methods) for searching criterias
	////////////////////////////////////////////////////////////////////////////////

	public String getSrchCompanyCode() {
		return this.srchCompanyCode;
	}

	public String getSrchStatus() {
		return this.srchStatus;
	}

	public String getSrchGroupIdFr() {
		return this.srchGroupIdFr;
	}

	public String getSrchGroupIdTo() {
		return this.srchGroupIdTo;
	}

	public String getSrchMenuIdFr() {
		return this.srchMenuIdFr;
	}

	public String getSrchMenuIdTo() {
		return this.srchMenuIdTo;
	}

	public String getSrchObjectIdFr() {
		return this.srchObjectIdFr;
	}

	public String getSrchObjectIdTo() {
		return this.srchObjectIdTo;
	}

	public String getSrchLangCodeFr() {
		return this.srchLangCodeFr;
	}

	public String getSrchLangCodeTo() {
		return this.srchLangCodeTo;
	}

	public String getSrchObjectNameFr() {
		return this.srchObjectNameFr;
	}

	public String getSrchObjectNameTo() {
		return this.srchObjectNameTo;
	}

	public void setSrchCompanyCode(String srchCompanyCode) {
		this.srchCompanyCode = srchCompanyCode;
	}

	public void setSrchStatus(String srchStatus) {
		this.srchStatus = srchStatus;
	}

	public void setSrchGroupIdFr(String srchGroupIdFr) {
		this.srchGroupIdFr = srchGroupIdFr;
	}

	public void setSrchGroupIdTo(String srchGroupIdTo) {
		this.srchGroupIdTo = srchGroupIdTo;
	}

	public void setSrchMenuIdFr(String srchMenuIdFr) {
		this.srchMenuIdFr = srchMenuIdFr;
	}

	public void setSrchMenuIdTo(String srchMenuIdTo) {
		this.srchMenuIdTo = srchMenuIdTo;
	}

	public void setSrchObjectIdFr(String srchObjectIdFr) {
		this.srchObjectIdFr = srchObjectIdFr;
	}

	public void setSrchObjectIdTo(String srchObjectIdTo) {
		this.srchObjectIdTo = srchObjectIdTo;
	}

	public void setSrchLangCodeFr(String srchLangCodeFr) {
		this.srchLangCodeFr = srchLangCodeFr;
	}

	public void setSrchLangCodeTo(String srchLangCodeTo) {
		this.srchLangCodeTo = srchLangCodeTo;
	}

	public void setSrchObjectNameFr(String srchObjectNameFr) {
		this.srchObjectNameFr = srchObjectNameFr;
	}

	public void setSrchObjectNameTo(String srchObjectNameTo) {
		this.srchObjectNameTo = srchObjectNameTo;
	}


	public String getSrchObjectTypeFr() {
		return srchObjectTypeFr;
	}


	public void setSrchObjectTypeFr(String srchObjectTypeFr) {
		this.srchObjectTypeFr = srchObjectTypeFr;
	}


	public String getSrchObjectTypeTo() {
		return srchObjectTypeTo;
	}


	public void setSrchObjectTypeTo(String srchObjectTypeTo) {
		this.srchObjectTypeTo = srchObjectTypeTo;
	}


	public String getSrchObjectWebLabelFr() {
		return srchObjectWebLabelFr;
	}


	public void setSrchObjectWebLabelFr(String srchObjectWebLabelFr) {
		this.srchObjectWebLabelFr = srchObjectWebLabelFr;
	}


	public String getSrchObjectWebLabelTo() {
		return srchObjectWebLabelTo;
	}


	public void setSrchObjectWebLabelTo(String srchObjectWebLabelTo) {
		this.srchObjectWebLabelTo = srchObjectWebLabelTo;
	}

	////////////////////////////////////////////////////////////////////////////////
	//Other Accessors (get/set methods)
	////////////////////////////////////////////////////////////////////////////////
    public ArrayList  getCodeDtlDropdownCollection(String shareCompanyCode, 
                                                   String  refMasterCode, 
                                                   String  columnValue, 
                                                   boolean  isCriteriaSearch){ 

        ArrayList collection = new  ArrayList();

        SelectDelegate  selectDelegate = new SelectDelegate();   
        String whereClause =  " hdr.REF_MASTER_CODE='" + refMasterCode + "'  " 
                           + " AND hdr.COMPANY_CODE = '" +  shareCompanyCode + "' " 
                           + " AND  hdr.COMPANY_CODE = dtl.COMPANY_CODE " 
                           +  " AND hdr.REF_MASTER_CODE = dtl.REF_MASTER_CODE  " 
                           + (isCriteriaSearch?"":(" AND  (dtl.REF_STATUS = '"+ProjectConstants.GENERIC_ACTIVE+"' OR dtl.REF_CODE = '" +  columnValue + "')")); 
        String codeDesc = "  decode(nvl(hdr.SHOW_DESC, '"+ProjectConstants.GENERIC_YES+"'),  '"+ProjectConstants.GENERIC_YES+"', dtl.REF_DESC, dtl.REF_CODE)"; 
  
        String  srchTableName = "T_CODE_DTL dtl, T_CODE_HDR hdr"; 
  
        String[]  srchColumn = new String[2]; 
        srchColumn[0] = " dtl.REF_CODE AS CODE  "; 
        srchColumn[1] = codeDesc + " AS  DESCRIPTION "; 
  
        ArrayList result = new ArrayList();
        Hashtable row =  new Hashtable(); 
        result = selectDelegate.findFieldList( srchTableName, srchColumn,  whereClause); 
        
        CodeDtlRow cdr =  new CodeDtlRow(); 
        for (int i = 0 ;  result.size() > 0 && i < result.size() ; i++  ){ 
            row =  (Hashtable)result.get(i); 
            cdr = new  CodeDtlRow(); 
              
            cdr.setCompanyCode(shareCompanyCode); 
            cdr.setRefMasterCode(refMasterCode); 
            cdr.setRefCode(CommonUtil.nullToString(row.get("CODE"))); 
            cdr.setDtlRefDesc(CommonUtil.nullToString(row.get("DESCRIPTION"))); 
  
            collection.add(cdr); 
         }  
        return  collection; 
    } 


}